package de.projectgoodmorning.alarm.model.gateway;

import java.util.Calendar;

import android.content.Context;
import android.content.Intent;
import android.util.Log;
import de.projectgoodmorning.alarm.activities.RingAlarmActivity;
import de.projectgoodmorning.alarm.model.generic.Alarm;
import de.projectgoodmorning.alarm.model.generic.AlarmCallback;

/**
 * Der RingAlarm ist ein spezieller Alarm, welcher den als Ausfuehrungsroutine
 * das Abspielen eines Klingeltones ausloest. 
 *
 * Das Abspielen wird nicht von diesem Objekt ausgefuehrt. Es leitet das Signal
 * an eine dafuer zusaendige RingAlarmActivity weiter.
 */
public class RingAlarm extends Alarm {
	private static final long serialVersionUID = 1L;
	
	/**
	 * erstellt ein neues RingAlarm Objekt.
	 * 
	 * @param time	erwartet den Ausfuehrungszeitpunkt als Calendar-Objekt
	 */
	public RingAlarm( Calendar time ) {
		this( time.getTimeInMillis() );
	}
	
	/**
	 * erstellt ein neues RingAlarm Objekt.
	 * 
	 * @param time	erwartet den Ausfuehrungszeitpunkt als long
	 */
	public RingAlarm( long time ) {
		super( time, new AlarmCallback() {
			@Override
			public void callback( Object obj ) {
				if( obj instanceof Context ) {
					Context ctx = ( Context ) obj;
					Intent i = new Intent( ctx, RingAlarmActivity.class );
					i.setFlags( Intent.FLAG_ACTIVITY_NEW_TASK );
					ctx.startActivity( i );
				} else {
					Log.e( "RingAlarm", "Parameter was not a context. Ringtone could not started." );
				}
			}
		} );
	}
}
